package com.example.自动执行;

import com.alibaba.excel.EasyExcel;
import com.example.entity.*;
import com.example.getdata.DataFromJiaoTong;
import com.example.mapper.ObjMapper;
import com.example.mapper.RoadtransportvehiclesMapper;
import com.example.service.*;
import com.example.vo.*;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.qcloud.cos.auth.COSCredentials;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.io.*;
import java.util.*;

import com.qcloud.cos.model.ObjectMetadata;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import static java.lang.System.out;
import com.qcloud.cos.COSClient;
import com.qcloud.cos.ClientConfig;
import com.qcloud.cos.auth.BasicCOSCredentials;
import com.qcloud.cos.model.PutObjectRequest;
import com.qcloud.cos.model.PutObjectResult;
import com.qcloud.cos.region.Region;
/*
 *  @author 雨安
 *  类名： ScheduledTask
 *  创建时间：2024/5/24
 */
@Component
@Slf4j
public class ScheduledTask {

    /**
     * 断网操作
     */
//    @Scheduled(cron = "0 23 11 * * *")
//     public void kellWIFI(){
//    public static void main(String[] args) {
//        try {
//            // 使用ProcessBuilder来创建一个可以执行外部命令的对象
//            ProcessBuilder pb = new ProcessBuilder("netsh", "wlan", "disconnect");
//            // 将标准错误流合并到标准输出流，这样我们可以同时读取到错误信息和正常输出
//            pb.redirectErrorStream(true);
//            // 启动进程，并返回Process对象，用于控制进程或获取其信息
//            Process process = pb.start();
//            // 创建BufferedReader来读取进程的标准输出流
//            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
//            String line;
//            // 循环读取进程输出的每一行
//            while ((line = reader.readLine()) != null) {
//                // 打印出进程输出的每一行内容
//                System.out.println(line);
//            }
//            // 等待进程执行完毕
//            process.waitFor();
//            // 打印出成功断开WiFi网络的消息
//            System.out.println("断网成功。。");
//        } catch (IOException | InterruptedException e) {
//            // 捕获并打印IO异常或中断异常
//            e.printStackTrace();
//        }
//     }

    @Autowired
    private ObjMapper objMapper;
    /**
     * 定时清空运政数据
     */
//    @Scheduled(cron = "0 00 00 * * *")
    public void deleteAllIR(){
        objMapper.deleteHeaAll();
        objMapper.deleteHouseAll();
        objMapper.deleteOccAll();
        objMapper.deleteTranAll();
        objMapper.deleteRoadAll();
        objMapper.deletePraAll();
        objMapper.deleteBusAll();
    }

    @Autowired
    DataFromJiaoTong data;

    @Autowired
    PractitionerService practitionerService;

    @Autowired
    BusinessoperationService businessoperationService;

    @Autowired
    OccupationalrequirementsService occupationalrequirementsService;

    @Autowired
    HouseholdinformationService householdinformationService;

    @Autowired
    HeavygeneralcargoService heavygeneralcargoService;

    @Autowired
    RoadtransportService roadtransportService;

    @Autowired
    RoadtransportvehiclesService roadtransportvehiclesService;

    //数据获取IR自动执行代码
//    @Scheduled(cron = "0 00 01 * * *")
    String data() throws JsonProcessingException {
        try{
            System.out.println("正在获取数据");
            //调用 从业人员基础信息
            Practitioner();
            //调用 业户经营许可证基础信息
            Businessoperation();
            //调用 从业资格证信息
            Occupationalrequirements();
            //调用 业户基础信息
            Householdinformation();
            //调用 本市重型普货车辆专题基础信息
            Heavygeneralcargo();
            //调用 道路运输经营许可信息
            Roadtransport();
            //调用 道路运输车辆基础信息
            Roadtransportvehicles();
            //返回 执行是否成功
            return "数据录入成功";
        }catch (Exception e){
            e.printStackTrace();
            throw new RuntimeException("数据录入失败");
        }
    }

    /*********************************************************************************************/
    //所有调用方法区
    void Practitioner() throws JsonProcessingException {
        try{
            //定义第一次访问的页码
            Integer page = 1;
            //调用数据获取方法
            Boolean mybit = getPractitioner(page);
            //循环遍历
            while (mybit == false){
                //每次访问页数+1
                page+=1;
                //我的循环判断值每次重新赋值
                mybit = getPractitioner(page);
            }
            System.out.println("数据正常录入完毕");
        }catch (Exception e){
            throw new RuntimeException("数据录入异常");
        }
    }

    //创建判断方法
    public Boolean getPractitioner(Integer page) throws JsonProcessingException {
        //访问内部拿到指定的json字符串
        String str = this.data.getData7(page.toString(),"1000","500222");
        //json识别
        ObjectMapper objectMapper = new ObjectMapper();
        //转换
        PractitionerVo practitionerVo = objectMapper.readValue(str, PractitionerVo.class);
        //打印提示
        System.out.println("从业人员基础信息500222录入条数：" + practitionerVo.getData().getList().size());
        //执行添加sql语句
        practitionerService.saveBatch(practitionerVo.getData().getList());
        //返回查询数据
        return (page*1000) > practitionerVo.getData().getTotalItem() ? true:false;
    }

    /*********************************************************************************************/

    void Businessoperation() throws JsonProcessingException {
        try{
            //定义第一次访问的页码
            Integer page = 1;
            //调用数据获取方法
            Boolean mybit = getBusinessoperation(page);
            //循环遍历
            while (mybit == false){
                //每次访问页数+1
                page+=1;
                //我的循环判断值每次重新赋值
                mybit = getBusinessoperation(page);
            }
            System.out.println("交通局数据正常录入完毕");

            //定义第一次访问的页码
            Integer page2 = 1;
            //调用数据获取方法
            Boolean mybit2 = getBusinessoperation2(page2);
            //循环遍历
            while (mybit2 == false){
                //每次访问页数+1
                page2+=1;
                //我的循环判断值每次重新赋值
                mybit2 = getBusinessoperation2(page2);
            }
            System.out.println("运管处数据正常录入完毕");
        }catch (Exception e){
            throw new RuntimeException("数据录入异常");
        }
    }

    //创建判断方法
    public Boolean getBusinessoperation(Integer page) throws JsonProcessingException {
        //访问内部拿到指定的json字符串
        String str = this.data.getData6(page.toString(),"1000","綦江区交通局");
        //json识别
        ObjectMapper objectMapper = new ObjectMapper();
        //转换
        BusinessoperationVo businessoperationVo = objectMapper.readValue(str, BusinessoperationVo.class);
        //打印提示
        System.out.println("业户经营许可证基础信息交通局录入数据条数：" + businessoperationVo.getData().getList().size());
        //执行添加sql语句
        businessoperationService.saveBatch(businessoperationVo.getData().getList());
        //返回查询数据
        return (page*1000) > businessoperationVo.getData().getTotalItem() ? true:false;
    }

    //创建判断方法
    public Boolean getBusinessoperation2(Integer page) throws JsonProcessingException {
        //访问内部拿到指定的json字符串
        String str = this.data.getData6(page.toString(),"1000","綦江区运管处");
        //json识别
        ObjectMapper objectMapper = new ObjectMapper();
        //转换
        BusinessoperationVo businessoperationVo = objectMapper.readValue(str, BusinessoperationVo.class);
        //打印提示
        System.out.println("业户经营许可证基础信息运管处录入数据条数：" + businessoperationVo.getData().getList().size());
        //执行添加sql语句
        businessoperationService.saveBatch(businessoperationVo.getData().getList());
        //返回查询数据
        return (page*1000) > businessoperationVo.getData().getTotalItem() ? true:false;
    }

    /*********************************************************************************************/

    void Occupationalrequirements() throws JsonProcessingException {
        //定义第一次访问的页码
        Integer page = 1;
        //调用数据获取方法
        Boolean mybit = getOccupationalrequirements(page);
        //循环遍历
        while (mybit == false){
            //每次访问页数+1
            page+=1;
            //我的循环判断值每次重新赋值
            mybit = getOccupationalrequirements(page);
        }
        System.out.println("数据正常录入完毕");
    }

    //创建判断方法
    public Boolean getOccupationalrequirements(Integer page) throws JsonProcessingException {
        //访问内部拿到指定的json字符串
        String str = this.data.getData5(page.toString(),"1000","500222");
        //json识别
        ObjectMapper objectMapper = new ObjectMapper();
        //转换
        OccupationalrequirementsVo occupationalrequirementsVo = objectMapper.readValue(str, OccupationalrequirementsVo.class);
        //打印提示
        System.out.println("从业资格证信息500222录入数据条数：" + occupationalrequirementsVo.getData().getList().size());
        //执行添加sql语句
        occupationalrequirementsService.saveBatch(occupationalrequirementsVo.getData().getList());
        //返回查询数据
        return (page*1000) > occupationalrequirementsVo.getData().getTotalItem() ? true:false;
    }

    /*********************************************************************************************/

    void Householdinformation() throws JsonProcessingException {
        //定义第一次访问的页码
        Integer page = 1;
        //调用数据获取方法
        Boolean mybit = getHouseholdinformation(page);
        //循环遍历
        while (mybit == false){
            //每次访问页数+1
            page+=1;
            //我的循环判断值每次重新赋值
            mybit = getHouseholdinformation(page);
        }
        System.out.println("数据正常录入完毕");
    }

    //创建判断方法
    public Boolean getHouseholdinformation(Integer page) throws JsonProcessingException {
        //访问内部拿到指定的json字符串
        String str = this.data.getData4(page.toString(),"1000","500222");
        //json识别
        ObjectMapper objectMapper = new ObjectMapper();
        //转换
        HouseholdinformationVo householdinformationVo = objectMapper.readValue(str, HouseholdinformationVo.class);
        //打印提示
        System.out.println("业户基础信息500222录入数据条数：" + householdinformationVo.getData().getList().size());
        //执行添加sql语句
        householdinformationService.saveBatch(householdinformationVo.getData().getList());
        //返回查询数据
        return (page*1000) > householdinformationVo.getData().getTotalItem() ? true:false;
    }

    /*********************************************************************************************/
    void Heavygeneralcargo() throws JsonProcessingException {
        //定义第一次访问的页码
        Integer page = 1;
        //调用数据获取方法
        Boolean mybit = getHeavygeneralcargo(page);
        //循环遍历
        while (mybit == false){
            //每次访问页数+1
            page+=1;
            //我的循环判断值每次重新赋值
            mybit = getHeavygeneralcargo(page);
        }
        System.out.println("数据正常录入完毕");
    }

    //创建判断方法
    public Boolean getHeavygeneralcargo(Integer page) throws JsonProcessingException {
        //访问内部拿到指定的json字符串
        String str = this.data.getData2(page.toString(),"1000","500222");
        //json识别
        ObjectMapper objectMapper = new ObjectMapper();
        //转换
        HeavygeneralcargoVo heavygeneralcargoVo = objectMapper.readValue(str, HeavygeneralcargoVo.class);
        //打印提示
        System.out.println("本市重型普货车辆专题基础信息500222录入数据条数：" + heavygeneralcargoVo.getData().getList().size());
        //执行添加sql语句
        heavygeneralcargoService.saveBatch(heavygeneralcargoVo.getData().getList());
        //返回查询数据
        return (page*1000) > heavygeneralcargoVo.getData().getTotalItem() ? true:false;
    }

    /*********************************************************************************************/
    void Roadtransport() throws JsonProcessingException {
        try{
            //定义第一次访问的页码
            Integer page = 1;
            //调用数据获取方法
            Boolean mybit = getRoadtransport(page);
            //循环遍历
            while (mybit == false){
                //每次访问页数+1
                page+=1;
                //我的循环判断值每次重新赋值
                mybit = getRoadtransport(page);
            }
            System.out.println("交通局数据正常录入完毕");

            //定义第一次访问的页码
            Integer page2 = 1;
            //调用数据获取方法
            Boolean mybit2 = getRoadtransport2(page2);
            //循环遍历
            while (mybit2 == false){
                //每次访问页数+1
                page2+=1;
                //我的循环判断值每次重新赋值
                mybit2 = getRoadtransport2(page2);
            }
            System.out.println("运管处数据正常录入完毕");
        }catch (Exception e){
            throw new RuntimeException("数据录入异常");
        }
    }

    //创建判断方法
    public Boolean getRoadtransport(Integer page) throws JsonProcessingException {
        //访问内部拿到指定的json字符串
        String str = this.data.getData(page.toString(),"1000","綦江区交通局");
        //json识别
        ObjectMapper objectMapper = new ObjectMapper();
        //转换
        RoadtransportVo roadtransportVo = objectMapper.readValue(str, RoadtransportVo.class);
        //打印提示
        System.out.println("业户经营许可证基础信息交通局录入数据条数：" + roadtransportVo.getData().getList().size());
        //执行添加sql语句
        roadtransportService.saveBatch(roadtransportVo.getData().getList());
        //返回查询数据
        return (page*1000) > roadtransportVo.getData().getTotalItem() ? true:false;
    }

    //创建判断方法
    public Boolean getRoadtransport2(Integer page) throws JsonProcessingException {
        //访问内部拿到指定的json字符串
        String str = this.data.getData(page.toString(),"1000","綦江区运管处");
        //json识别
        ObjectMapper objectMapper = new ObjectMapper();
        //转换
        RoadtransportVo roadtransportVo = objectMapper.readValue(str, RoadtransportVo.class);
        //打印提示
        System.out.println("业户经营许可证基础信息运管处录入数据条数：" + roadtransportVo.getData().getList().size());
        //执行添加sql语句
        roadtransportService.saveBatch(roadtransportVo.getData().getList());
        //返回查询数据
        return (page*1000) > roadtransportVo.getData().getTotalItem() ? true:false;
    }

    /*********************************************************************************************/

    void Roadtransportvehicles() throws JsonProcessingException {
        //定义第一次访问的页码
        Integer page = 1;
        //调用数据获取方法
        Boolean mybit = getRoadtransportvehicles(page);
        //循环遍历
        while (mybit == false){
            //每次访问页数+1
            page+=1;
            //我的循环判断值每次重新赋值
            mybit = getRoadtransportvehicles(page);
        }
        System.out.println("数据正常录入完毕");
    }

    //创建判断方法
    public Boolean getRoadtransportvehicles(Integer page) throws JsonProcessingException {
        //访问内部拿到指定的json字符串
        String str = this.data.getData3(page.toString(),"1000","500222");
        //json识别
        ObjectMapper objectMapper = new ObjectMapper();
        //转换
        RoadtransportvehiclesVo roadtransportvehiclesVo = objectMapper.readValue(str, RoadtransportvehiclesVo.class);
        //打印提示
        System.out.println("道路运输车辆基础信息500222录入数据条数：" + roadtransportvehiclesVo.getData().getList().size());
        //执行添加sql语句
        roadtransportvehiclesService.saveBatch(roadtransportvehiclesVo.getData().getList());
        //返回查询数据
        return (page*1000) > roadtransportvehiclesVo.getData().getTotalItem() ? true:false;
    }

    /*********************************************************************************************/

    /**
     * 每日消息推送
     */
//    @Scheduled(cron = "0 06 15 * * *")
    public void sendExcel() throws IOException {
        log.info("进入了执行");
//        PractitionerApi();
//        RoadtransportvehiclesApi();
//        RoadtransportApi();
//        HeavygeneralcargoApi();
//        HouseholdinformationApi();
//        OccupationalrequirementsApi();
//        BusinessoperationApi();

        //将文件上传腾讯玉奴
        uploadImgToAxd("D:\\数据自动推送\\src\\main\\resources\\业户基础信息.xlsx");
        uploadImgToAxd("D:\\数据自动推送\\src\\main\\resources\\业户经营许可证基础信息.xlsx");
        uploadImgToAxd("D:\\数据自动推送\\src\\main\\resources\\从业人员基础信息.xlsx");
        uploadImgToAxd("D:\\数据自动推送\\src\\main\\resources\\从业资格证.xlsx");
        uploadImgToAxd("D:\\数据自动推送\\src\\main\\resources\\本市重型普货车辆专题基础信息.xlsx");
        uploadImgToAxd("D:\\数据自动推送\\src\\main\\resources\\道路运输经营许可信息.xlsx");
        uploadImgToAxd("D:\\数据自动推送\\src\\main\\resources\\道路运输车辆基础信息.xlsx");

        //推送  将此处代码替换成腾讯云
//        sendQQExcel("D:\\数据自动推送\\src\\main\\resources\\业户基础信息.xlsx");
//        sendQQExcel("D:\\数据自动推送\\src\\main\\resources\\业户经营许可证基础信息.xlsx");
//        sendQQExcel("D:\\数据自动推送\\src\\main\\resources\\从业人员基础信息.xlsx");
//        sendQQExcel("D:\\数据自动推送\\src\\main\\resources\\从业资格证.xlsx");
//        sendQQExcel("D:\\数据自动推送\\src\\main\\resources\\本市重型普货车辆专题基础信息.xlsx");
//        sendQQExcel("D:\\数据自动推送\\src\\main\\resources\\道路运输经营许可信息.xlsx");
//        sendQQExcel("D:\\数据自动推送\\src\\main\\resources\\道路运输车辆基础信息.xlsx");

    }



    public String uploadImgToAxd(String localFilePath) {
        // 替换为您的腾讯云账号的 SecretId 和 SecretKey
        String secretId = "AKIDzrX0EE0Vnwsd9RWNyKSLxKSLUO2SfdMq";
        String secretKey = "IBuSlrqiR1QipjPsENJ1WoshJhuufEYe";
        // 替换为您的腾讯云 COS 存储桶所在的地域
        String regionName = "ap-chongqing";
        // 替换为您的腾讯云 COS 存储桶名称
        String bucketName = "axd-1256474543";

        try {
            // 本地文件路径，不需要分割或转换
            File localFile = new File(localFilePath);
            if (!localFile.exists() || !localFile.isFile()) {
                throw new IllegalArgumentException("文件不存在或不是一个文件：" + localFilePath);
            }

            // 文件的COS路径（可以包含目录和文件名）
            String key = localFile.getName(); // 或者您可以选择一个不同的key

            // 腾讯云COS客户端认证对象
            COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);

            // 客户端配置对象, 包括region
            ClientConfig clientConfig = new ClientConfig(new Region(regionName));

            // 生成cos客户端
            COSClient cosClient = new COSClient(cred, clientConfig);

            // 创建一个putobject的请求
            FileInputStream inputStream = new FileInputStream(localFile);
            ObjectMetadata metadata = new ObjectMetadata();
            metadata.setContentLength(localFile.length());
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, inputStream, metadata);

            // 上传文件
            PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest);

            // 关闭文件输入流
            inputStream.close();

            // 获取上传文件的访问URL
            String fileUrl = "https://" + bucketName + ".cos." + regionName + ".myqcloud.com/" + key;

            // 打印访问的 URL
            System.out.println("文件上传成功，访问URL：" + fileUrl);

            // 关闭cos客户端
            cosClient.shutdown();

            // 返回Key存入数据库
            return key;

        } catch (Exception e) {
            e.printStackTrace();
            // 在这里可以添加更详细的错误处理逻辑
            return null; // 或者抛出一个自定义的异常
        }
    }


    void sendQQExcel(String ExcelAdd){
        // 设置您的QQ邮箱地址  调用qq邮箱进行消息推送excel
        final String username = "3608447061@qq.com";
        // 设置您的QQ邮箱授权码
        final String password = "rcleclpcmqcldbhh";
        // 创建Properties对象，用于设置邮件相关属性
        Properties props = new Properties();
        // 设置QQ邮箱SMTP服务器地址
        props.put("mail.smtp.host", "smtp.qq.com");
        // 设置QQ邮箱SMTP服务器端口
        props.put("mail.smtp.port", "587");
        // 启用SMTP身份验证
        props.put("mail.smtp.auth", "true");
        // 启用TLS加密
        props.put("mail.smtp.starttls.enable", "true");
        Session session = Session.getInstance(props, new javax.mail.Authenticator() {
            // 实现获取密码验证
            protected PasswordAuthentication getPasswordAuthentication() {
                // 返回用户名和密码的验证信息
                return new PasswordAuthentication(username, password);
            }
        });
        try {
            // 创建邮件消息
            Message message = new MimeMessage(session);
            // 设置发件人邮箱地址
            message.setFrom(new InternetAddress(username));
            // 设置收件人邮箱地址
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("1608494258@qq.com"));
            // 设置邮件主题
            message.setSubject("每日Excel推搡");
//            message.setSubject("验证码推送" + new Date());
            // 创建消息主体
            BodyPart messageBodyPart = new MimeBodyPart();
            // 设置邮件内容
            messageBodyPart.setText("Excel");
            // 创建附件
            MimeBodyPart attachmentPart = new MimeBodyPart();
            // 设置Excel文件路径
            String filename = ExcelAdd;
            //创建文件数据源
            DataSource source = new FileDataSource(filename);
            //设置数据处理程序
            attachmentPart.setDataHandler(new DataHandler(source));
            // 设置附件文件名
            attachmentPart.setFileName(new File(filename).getName());
            // 组合消息部分
            Multipart multipart = new MimeMultipart();
            multipart.addBodyPart(messageBodyPart);
            multipart.addBodyPart(attachmentPart);
            // 设置消息内容为组合部分
            message.setContent(multipart);
            // 发送邮件
            Transport.send(message);
            // 输出邮件发送成功消息
            log.info("Email with attachment sent successfully.");
        } catch (MessagingException e) {
            // 捕获并抛出邮件发送异常
            throw new RuntimeException(e);
        }
    }




    /**********************************************************************************************************/
    //创建数据接收集合 从业人员
    private static List<Practitioner> practitionerList = new LinkedList<>();
    public void PractitionerApi() throws JsonProcessingException {
        List<Practitioner> list = practitionerService.list(null);
        //生成excel文件
        String fileName = "D:\\数据自动推送\\src\\main\\resources\\从业人员基础信息.xlsx";
        //表头字体颜色map 1为user中索引位置
        Map<Integer,Short> colorMap=new HashMap<>();
        //颜色
        colorMap.put(1, IndexedColors.BLUE.index);
        //路径
        EasyExcel.write(fileName, Practitioner.class).sheet("从业人员基础信息").doWrite(this.practitionerList);
        //调用结束后将list赋值为null
        this.practitionerList = null;
    }
    /**********************************************************************************************************/
    //创建接收数据集合 业户经营许可证基础信息
    private static List<Businessoperation> businessoperationList = new LinkedList<>();
    public void BusinessoperationApi() throws JsonProcessingException {
        this.businessoperationList = businessoperationService.list(null);
        //生成excel文件
        String fileName = "D:\\数据自动推送\\src\\main\\resources\\业户经营许可证基础信息.xlsx";
        //表头字体颜色
        Map<Integer,Short> colorMap=new HashMap<>();
        //颜色
        colorMap.put(1, IndexedColors.BLUE.index);
        //路径
        EasyExcel.write(fileName, Businessoperation.class).sheet("业户经营许可证基础信息").doWrite(this.businessoperationList);
        //调用结束后将list赋值为null
        this.businessoperationList = null;
    }

    /**********************************************************************************************************/
    //创建数据接收集合 从业人员
    private static List<Occupationalrequirements> occupationalrequirementsList = new LinkedList<>();
    //从业资格证信息
    public void OccupationalrequirementsApi() throws JsonProcessingException {
        this.occupationalrequirementsList = occupationalrequirementsService.list(null);
        //生成excel文件
        String fileName = "D:\\数据自动推送\\src\\main\\resources\\从业资格证.xlsx";
        //表头字体颜色
        Map<Integer,Short> colorMap=new HashMap<>();
        //颜色
        colorMap.put(1, IndexedColors.BLUE.index);
        //路径
        EasyExcel.write(fileName, Occupationalrequirements.class).sheet("从业资格证").doWrite(this.occupationalrequirementsList);
        //调用结束后将list赋值为null
        this.occupationalrequirementsList = null;
    };

    /**********************************************************************************************************/
    //创建业户基础信息初始化集合
    private static List<Householdinformation> householdinformationList = new LinkedList<>();
    //业户基础信息
    public void HouseholdinformationApi() throws JsonProcessingException {
        this.householdinformationList = householdinformationService.list(null);
        //生成excel文件
        String fileName = "D:\\数据自动推送\\src\\main\\resources\\业户基础信息.xlsx";
        //表头字体颜色
        Map<Integer,Short> colorMap=new HashMap<>();
        //颜色
        colorMap.put(1, IndexedColors.BLUE.index);
        //路径
        EasyExcel.write(fileName, Householdinformation.class).sheet("业户基础信息").doWrite(this.householdinformationList);
        //调用结束后将list赋值为null
        this.householdinformationList = null;
    };
    /**********************************************************************************************************/
    //创建初始化集合
    private static List<Heavygeneralcargo> heavygeneralcargoList = new LinkedList<>();
    //本市重型普货车辆专题基础信息
    public void HeavygeneralcargoApi() throws JsonProcessingException {
        this.heavygeneralcargoList = heavygeneralcargoService.list( null);
        //生成excel文件
        String fileName = "D:\\数据自动推送\\src\\main\\resources\\本市重型普货车辆专题基础信息.xlsx";
        //表头字体颜色
        Map<Integer,Short> colorMap=new HashMap<>();
        //颜色
        colorMap.put(1, IndexedColors.BLUE.index);
        //路径
        EasyExcel.write(fileName, Heavygeneralcargo.class).sheet("本市重型普货车辆专题基础信息").doWrite(this.heavygeneralcargoList);
        //调用结束后将list赋值为null
        this.heavygeneralcargoList = null;
    };

    /**********************************************************************************************************/
    //创建初始化集合
    private static List<Roadtransport> roadtransportList = new ArrayList<>(1000000);
    //道路运输经营许可信息
    public void RoadtransportApi() throws JsonProcessingException {
        this.roadtransportList = roadtransportService.list(null);
        //生成excel文件
        String fileName = "D:\\数据自动推送\\src\\main\\resources\\道路运输经营许可信息.xlsx";
        //表头字体颜色
        Map<Integer,Short> colorMap=new HashMap<>();
        //颜色
        colorMap.put(1, IndexedColors.BLUE.index);
        //路径
        EasyExcel.write(fileName, Roadtransport.class).sheet("道路运输经营许可信息").doWrite(this.roadtransportList);
        //调用结束后将list赋值为null
        this.roadtransportList = null;
    };
    /**********************************************************************************************************/
    @Autowired
    private RoadtransportvehiclesMapper roadtransportvehiclesMapper;
    //创建初始化集合
    private static List<Roadtransportvehicles> roadtransportvehiclesList = new LinkedList<>();
    //调用 道路运输车辆基础信息
    public void RoadtransportvehiclesApi() throws JsonProcessingException {
        //此处sql是通过时间排序取出离现在时间最近的一条数据通过车辆进行分组
        this.roadtransportvehiclesList = roadtransportvehiclesMapper.getAllList();
        //生成excel文件
        String fileName = "D:\\数据自动推送\\src\\main\\resources\\道路运输车辆基础信息.xlsx";
        //表头字体颜色
        Map<Integer,Short> colorMap=new HashMap<>();
        //颜色
        colorMap.put(1, IndexedColors.BLUE.index);
        //路径
        EasyExcel.write(fileName, Roadtransportvehicles.class).sheet("道路运输车辆基础信息").doWrite(this.roadtransportvehiclesList);
        //调用结束后将list赋值为null
        this.roadtransportvehiclesList = null;
    };

}
